package cn.tedu.ectends;

import org.junit.jupiter.api.Test;

/*
 * 本类用来测试继承中构造方法的使用*/
public class TestExtends {
    @Test
    public void test(){
        Son1 son = new Son1();

    }

}
//1创建父类
class Father1 {
   /* public Father1() {
        System.out.println("我是父类的无参构造");
    }*/
    public Father1(String a) {
        System.out.println("我是父类的有参构造");
    }

}
//2创建子类
class Son1 extends  Father1{
    //创建子类无参构造
    /*在子类的方法中默认存在super();表示调用父类的无参构造
    * 也就是说，在创建子类对象时，会调用子类的构造方法，继承后，先去调用父类的构造方法，再去调用子类的构造方法
    * 当父类中没有无参构造时，调用的是父类的含参构造
    * 子类不关心具体调用得是父类的那个构造器
    * 只是必须强调父类的的一个构造器而已
    * 父类构造器不允许被继承  原因：因为构造方法的语法要求，构造方法必须与类同名，天然不符合构造要求♩♩
    * */
    public Son1() {
        super("我是你爸爸");
        System.out.println("我是Son1的无参构造");
    }
}

